29.3.1. 实体类

通常,JPA实体类被定义到一个persistence.xml文件,在Spring Boot中,这个文件被'实体扫描'取代。默认情况,Spring Boot会查找主配置类(被@EnableAutoConfiguration@SpringBootApplication注解的类)下的所有包。

任何被@Entity@Embeddable@MappedSuperclass注解的类都将被考虑,一个普通的实体类看起来像这样:

package com.example.myapp.domain;

import java.io.Serializable;
import javax.persistence.*;

@Entity
public class City implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String state;

    // ... additional members, often include @OneToMany mappings

    protected City() {
        // no-args constructor required by JPA spec
        // this one is protected since it shouldn't be used directly
    }

    public City(String name, String state) {
        this.name = name;
        this.country = country;
    }

    public String getName() {
        return this.name;
    }

    public String getState() {
        return this.state;
    }
    // ... etc
}

你可以使用@EntityScan注解自定义实体扫描路径,具体参考Section 74.4, “Separate @Entity definitions from Spring configuration”